package com.txzt.gaea.base.service;

import com.txzt.base.core.RtnInfo;
import com.txzt.gaea.base.dto.DictInfoQueryDTO;
import com.txzt.gaea.base.model.DictDetail;
import com.txzt.gaea.base.model.DictInfo;
import com.txzt.gaea.base.vo.DictInfoVo;
import com.txzt.gaea.common.base.service.BaseService;
import com.txzt.gaea.common.page.PageInfoBT;

import java.util.List;
import java.util.Map;

public interface DictInfoService extends BaseService<DictInfo> {

    /**
     * 分頁查詢
     * @param dictInfoQueryDTO
     * @return RtnInfo
     */
    RtnInfo<PageInfoBT<DictInfoVo>> list(DictInfoQueryDTO dictInfoQueryDTO);

    /**
     * 数据存入
     * @param dictInfo
     * @return num
     */
    int save(DictInfo dictInfo);

    /**
     * 数据更新
     * @param dictInfo
     * @return num
     */
    int update(DictInfo dictInfo);

    /**
     * 数据查重 依照 dictCode 字段
     * @param dictInfo
     * @return boolean
     */
    boolean addCheckCode(DictInfo dictInfo);

    /**
     * 更新数据查重 依照 dictCode 字段 且 id 不等于自己
     * @param dictInfo
     * @return boolean
     */
    boolean updateCheckCode(DictInfo dictInfo);

    /**
     * 逻辑删除 依照 id 字段
     * @param id
     * @return num
     */
    int delete(Long id);

    /**
     * 查询最后的排序结果
     * @param
     * @return Integer
     */
    Integer getLastSort();

    /**
     * 查询数据 依照 id 字段
     * @param id
     * @return num
     */
    RtnInfo<DictInfo> getDictInfo(Long id);

    /**
     * 查询所有字典数据
     * @param
     * @return Map<String, List<Map<String,Object>>>
     */
    Map<String, List<Map<String,Object>>> getAllDictInfo();

    String dictTranslate(String dictCode,String value);

    String getDictValue(String dictCode,String label);

    DictDetail selectDictValue(String dictCode, String label);

    DictDetail getSubDictValue(Long dictId,String label);
}
